const axios = require('axios')

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
//  超时时间
const timeout = 10000

const service = axios.create({
    // axios中请求配置有baseURL选项，表示请求URL公共部分
    baseURL: 'https://api.doumvip.com',
    // 超时
    timeout
})

// 请求拦截器
/*service.interceptors.request.use(config => {
    //  初始化headers
    config.headers = config.headers || {}
    //  初始化params
    config.params = config.params || {}
    //  初始化data
    config.data = config.data || {}

    // 是否需要设置 token
    //  植入token
    if (!isToken && token) {
        if (config.method === 'get' || config.method === 'delete') {
            config.params = {
                uid: token.uid,
                token: token.token,
                ...config.params,
            }
        } else if (config.method === 'post' || config.method === 'put') {
            config.data = {
                uid: token.uid,
                token: token.token,
                ...config.data,
            }
        }
    }

    return config
}, error => {
    console.log('请求拦截错误' + error)
    Promise.reject(error)
})*/

// 响应拦截器
service.interceptors.response.use(res => {
    // console.log(res)
    // 未设置状态码则默认成功状态
    const code = res.status === 200 ? res.data.status : res.status

    // 二进制数据则直接返回
    /*if (res.request.responseType ===  'blob' || res.request.responseType ===  'arraybuffer') {
        return res.data
    }*/

    // TODO 请求状态码的逻辑处理
    switch (code) {
        case 0:
        case 1:
        case 200:
            return res.data
        case 100004:  //  需要登录
            // showToast({ type: 'fail', message: '需要登录' })
            return Promise.reject(res.data)
        default:
            // showToast({ type: 'fail', message: res.data.message || res.data.msg })
            break
    }

    return res.data
}, error => {
    console.log(error)
    // const errorJson = error.toJSON()
    // let message =  errorJson.message === 'Network Error' ? '网络错误' : ''
    // switch (errorJson.message) {
    //     case 'Network Error':
    //         message = '网络错误'
    //         break
    //     case `timeout of ${timeout}ms exceeded`:
    //         message = '网络超时'
    //         break
    // }
    // console.log(`请求响应错误：${message || `${errorJson.name}: ${errorJson.message}`}`)
    // showToast({ type: 'fail', message: message || `${errorJson.name}: ${errorJson.message}` })

    //  messageStore 添加错误
    // const messageStore = useMessageStore()
    // messageStore.addError(errorJson)
    // return Promise.reject(error)
    return error
})

module.exports = service
